package com.tianlu.store.service.impl;

import com.tianlu.store.common.MyBaseServiceImpl;
import com.tianlu.store.common.ResultCode;
import com.tianlu.store.common.ServiceException;
import com.tianlu.store.entity.OrderProduct;
import com.tianlu.store.entity.ProductInfo;
import com.tianlu.store.mapper.ProductInfoMapper;
import com.tianlu.store.service.ProductInfoService;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

/**
 * @Author 梁东烂
 * @Desc 商品信息表(ProductInfo)表服务实现类
 * @Date 2023-04-03 16:50:55
 */
@Service("productInfoService")
public class ProductInfoServiceImpl extends MyBaseServiceImpl<ProductInfoMapper, ProductInfo> implements ProductInfoService {
    /**
     * 批量修改库存
     *
     * @param productInfoList 商品信息
     * @author liangdl
     * @since 2023/4/3 18:59
     */
    @Override
    public void updateStock(List<ProductInfo> productInfoList) {
        dao.updateStock(productInfoList);
    }

    /**
     * 退款加库存
     *
     * @param productList 商品信息
     * @author liangdl
     * @since 2023/4/3 18:59
     */
    @Override
    public void resumeStock(List<OrderProduct> productList) {
        dao.resumeStock(productList);
    }

    /**
     * 上架/下架
     *
     * @param id 主键
     * @return Boolean
     * @author liangdl
     * @since 2023/4/17 14:24
     */
    @Override
    public Boolean changeStatus(Long id) {
        ProductInfo productInfo = super.getById(id);
        if (Objects.isNull(productInfo)) {
            throw new ServiceException(ResultCode.CODE_400, "商品不存在！");
        }
        if (productInfo.getStatus() == 1) {
            productInfo.setStatus(0);
        } else {
            productInfo.setStatus(1);
        }
        return super.updateById(productInfo);
    }

    /**
     * 查询商品列表
     *
     * @param searchKey 搜索条件
     * @param orderBy   排序
     * @param level     用户等级
     * @return List<ProductInfo>
     * @author liangdl
     * @since 2023/4/26 17:13
     */
    @Override
    public List<ProductInfo> findProductList(String searchKey, String orderBy, Integer level) {
        return dao.findProductList(searchKey, orderBy, level);
    }

    /**
     * 查询商品列表
     *
     * @param idList 商品id
     * @return List<ProductInfo>
     * @author liangdl
     * @since 2023/4/26 17:13
     */
    @Override
    public List<ProductInfo> findByIdList(List<Long> idList) {
        return dao.findByIdList(idList);
    }
}
